home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_mutants.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  6KB  |  218 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. from test.test_support import verbose, TESTFN
  5. import random
  6. import os
  7. dict1 = { }
  8. dict2 = { }
  9. dict1keys = []
  10. dict2keys = []
  11. mutate = 0
  12.  
  13. def maybe_mutate():
  14.     global mutate
  15.     if not mutate:
  16.         return None
  17.     
  18.     if random.random() < 0.5:
  19.         return None
  20.     
  21.     if random.random() < 0.5:
  22.         target = dict1
  23.         keys = dict1keys
  24.     else:
  25.         target = dict2
  26.         keys = dict2keys
  27.     if random.random() < 0.20000000000000001:
  28.         mutate = 0
  29.         while None:
  30.             newkey = Horrid(random.randrange(100))
  31.             if newkey not in target:
  32.                 break
  33.                 continue
  34.         target[newkey] = Horrid(random.randrange(100))
  35.         keys.append(newkey)
  36.         mutate = 1
  37.     elif keys:
  38.         i = random.randrange(len(keys))
  39.         key = keys[i]
  40.         del target[key]
  41.         del keys[i]
  42.     
  43.  
  44.  
  45. class Horrid:
  46.     
  47.     def __init__(self, i):
  48.         self.i = i
  49.         self.hashcode = random.randrange(1000000000)
  50.  
  51.     
  52.     def __hash__(self):
  53.         return self.hashcode
  54.  
  55.     
  56.     def __cmp__(self, other):
  57.         maybe_mutate()
  58.         return cmp(self.i, other.i)
  59.  
  60.     
  61.     def __repr__(self):
  62.         return 'Horrid(%d)' % self.i
  63.  
  64.  
  65.  
  66. def fill_dict(d, candidates, numentries):
  67.     d.clear()
  68.     for i in xrange(numentries):
  69.         d[Horrid(random.choice(candidates))] = Horrid(random.choice(candidates))
  70.     
  71.     return d.keys()
  72.  
  73.  
  74. def test_one(n):
  75.     global mutate, dict1keys, dict2keys, mutate
  76.     mutate = 0
  77.     dict1keys = fill_dict(dict1, range(n), n)
  78.     dict2keys = fill_dict(dict2, range(n), n)
  79.     mutate = 1
  80.     if verbose:
  81.         print 'trying w/ lengths', len(dict1), len(dict2),
  82.     
  83.     while dict1 and len(dict1) == len(dict2):
  84.         if verbose:
  85.             print '.',
  86.         
  87.         c = cmp(dict1, dict2)
  88.     if verbose:
  89.         print 
  90.     
  91.  
  92.  
  93. def test(n):
  94.     for i in xrange(n):
  95.         test_one(random.randrange(1, 100))
  96.     
  97.  
  98. test(100)
  99.  
  100. class Child:
  101.     
  102.     def __init__(self, parent):
  103.         self.__dict__['parent'] = parent
  104.  
  105.     
  106.     def __getattr__(self, attr):
  107.         self.parent.a = 1
  108.         self.parent.b = 1
  109.         self.parent.c = 1
  110.         self.parent.d = 1
  111.         self.parent.e = 1
  112.         self.parent.f = 1
  113.         self.parent.g = 1
  114.         self.parent.h = 1
  115.         self.parent.i = 1
  116.         return getattr(self.parent, attr)
  117.  
  118.  
  119.  
  120. class Parent:
  121.     
  122.     def __init__(self):
  123.         self.a = Child(self)
  124.  
  125.  
  126. f = open(TESTFN, 'w')
  127. print >>f, Parent().__dict__
  128. f.close()
  129. os.unlink(TESTFN)
  130. dict = { }
  131. for i in range(1, 10):
  132.     dict[i] = i
  133.  
  134. f = open(TESTFN, 'w')
  135.  
  136. class Machiavelli:
  137.     
  138.     def __repr__(self):
  139.         dict.clear()
  140.         print >>f
  141.         return `'machiavelli'`
  142.  
  143.     
  144.     def __hash__(self):
  145.         return 0
  146.  
  147.  
  148. dict[Machiavelli()] = Machiavelli()
  149. print >>f, str(dict)
  150. f.close()
  151. os.unlink(TESTFN)
  152. del f
  153. del dict
  154. dict = { }
  155. for i in range(1, 10):
  156.     dict[i] = i
  157.  
  158.  
  159. class Machiavelli2:
  160.     
  161.     def __eq__(self, other):
  162.         dict.clear()
  163.         return 1
  164.  
  165.     
  166.     def __hash__(self):
  167.         return 0
  168.  
  169.  
  170. dict[Machiavelli2()] = Machiavelli2()
  171.  
  172. try:
  173.     dict[Machiavelli2()]
  174. except KeyError:
  175.     pass
  176.  
  177. del dict
  178. dict = { }
  179. for i in range(1, 10):
  180.     dict[i] = i
  181.  
  182.  
  183. class Machiavelli3:
  184.     
  185.     def __init__(self, id):
  186.         self.id = id
  187.  
  188.     
  189.     def __eq__(self, other):
  190.         if self.id == other.id:
  191.             dict.clear()
  192.             return 1
  193.         else:
  194.             return 0
  195.  
  196.     
  197.     def __repr__(self):
  198.         return '%s(%s)' % (self.__class__.__name__, self.id)
  199.  
  200.     
  201.     def __hash__(self):
  202.         return 0
  203.  
  204.  
  205. dict[Machiavelli3(1)] = Machiavelli3(0)
  206. dict[Machiavelli3(2)] = Machiavelli3(0)
  207. f = open(TESTFN, 'w')
  208.  
  209. try:
  210.     print >>f, dict[Machiavelli3(2)]
  211. except KeyError:
  212.     pass
  213. finally:
  214.     f.close()
  215.     os.unlink(TESTFN)
  216.  
  217. del dict
  218.